home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 February / PCWFEB09.iso / Software / Resources / Chat & Communication / Digsby build 37 / digsby_setup.exe / lib / PIL / BdfFontFile.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2008-10-13  |  3KB  |  102 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.5)
  3.  
  4. import Image
  5. import FontFile
  6. import string
  7. bdf_slant = {
  8.     'R': 'Roman',
  9.     'I': 'Italic',
  10.     'O': 'Oblique',
  11.     'RI': 'Reverse Italic',
  12.     'RO': 'Reverse Oblique',
  13.     'OT': 'Other' }
  14. bdf_spacing = {
  15.     'P': 'Proportional',
  16.     'M': 'Monospaced',
  17.     'C': 'Cell' }
  18.  
  19. def bdf_char(f):
  20.     while None:
  21.         s = f.readline()
  22.         if not s:
  23.             return None
  24.         
  25.         if s[:9] == 'STARTCHAR':
  26.             break
  27.             continue
  28.         continue
  29.         id = string.strip(s[9:])
  30.         props = { }
  31.         while None:
  32.             s = f.readline()
  33.             if not s or s[:6] == 'BITMAP':
  34.                 break
  35.             
  36.             i = string.find(s, ' ')
  37.             props[s[:i]] = s[i + 1:-1]
  38.             continue
  39.             bitmap = []
  40.             while None:
  41.                 s = f.readline()
  42.                 if not s or s[:7] == 'ENDCHAR':
  43.                     break
  44.                 
  45.                 continue
  46.                 bitmap = string.join(bitmap, '')
  47.                 (x, y, l, d) = map(int, string.split(props['BBX']))
  48.                 (dx, dy) = map(int, string.split(props['DWIDTH']))
  49.                 bbox = ((dx, dy), (l, -d - y, x + l, -d), (0, 0, x, y))
  50.                 
  51.                 try:
  52.                     im = Image.fromstring('1', (x, y), bitmap, 'hex', '1')
  53.                 except ValueError:
  54.                     im = Image.new('1', (x, y))
  55.  
  56.                 return (id, int(props['ENCODING']), bbox, im)
  57.  
  58.  
  59. class BdfFontFile(FontFile.FontFile):
  60.     
  61.     def __init__(self, fp):
  62.         FontFile.FontFile.__init__(self)
  63.         s = fp.readline()
  64.         if s[:13] != 'STARTFONT 2.1':
  65.             raise SyntaxError, 'not a valid BDF file'
  66.         
  67.         props = { }
  68.         comments = []
  69.         while None:
  70.             s = fp.readline()
  71.             if not s or s[:13] == 'ENDPROPERTIES':
  72.                 break
  73.             
  74.             i = string.find(s, ' ')
  75.             props[s[:i]] = s[i + 1:-1]
  76.             if s[:i] in ('COMMENT', 'COPYRIGHT'):
  77.                 if string.find(s, 'LogicalFontDescription') < 0:
  78.                     comments.append(s[i + 1:-1])
  79.                 
  80.             continue
  81.             font = string.split(props['FONT'], '-')
  82.             font[4] = bdf_slant[string.upper(font[4])]
  83.             font[11] = bdf_spacing[string.upper(font[11])]
  84.             ascent = int(props['FONT_ASCENT'])
  85.             descent = int(props['FONT_DESCENT'])
  86.             fontname = string.join(font[1:], ';')
  87.             font = []
  88.             while None:
  89.                 c = bdf_char(fp)
  90.                 if not c:
  91.                     break
  92.                 
  93.                 (xy, dst, src) = (id, ch)
  94.                 im = c
  95.                 if ch >= 0 and ch < len(self.glyph):
  96.                     self.glyph[ch] = (xy, dst, src, im)
  97.                     continue
  98.                 continue
  99.                 return None
  100.  
  101.  
  102.